from django.db.models import F,Q
from product.models import Product
from django.http import HttpResponse
"""
常见场景
--字段间比较
--字段值自增/自减
"""
def F_query(request):
    # 查询价格大于库存的商品
    products = Product.objects.filter(price__gt=F('stock'))
    # print(products)
    # 字段增减,将所有上架的商品的热度+101
    Product.objects.filter(is_active=True).update(popularity = F('popularity')+101)
    # 将所在上架商品的价格打八折
    products = Product.objects.filter(is_active=True).update(price = F('price')*0.8)
    print(products)
    # 查询库存是热度10倍以上的商品
    products = Product.objects.filter(stock__gt=F('popularity')*10)
    # print(products)
    
    return HttpResponse("ok")


def Q_query(request):
    """
    与(AND)  查询同时满足多个条件的商品
    或(OR)   查询满足多个条件中的一个
    非(NOT)  查询不满足条件的商品
    """
    # 使用filter链式调用    
    # products = Product.objects.filter(price__gt=1000).filter(stock__lte=2000).filter(is_active=True)
    
    # 使用Q对象  & 表示与
    # products = Product.objects.filter(Q(price__gt=1000) & Q(stock__lte=2000) & Q(is_active=True))
    
    # 使用，分隔   (隐式and)
    # products = Product.objects.filter(   price__gt=1000,stock__lte=2000,   is_active=True)
    
    
    # products = Product.objects.filter(Q(price__lt=500) | Q(popularity__gt=1000) | Q(product_name__contains="pro"))
    
    products = Product.objects.filter(~Q(product_name__startswith="小米") & ~Q(is_active=False))
    print(products)
    
    
    
    return HttpResponse("ok")
        
